package pers.kw.dozer;

import java.util.List;
import java.util.Set;

/**
 * bean转换工具接口
 */
public interface IMapper {

    /**
     * 单个对象的深度复制及类型转换
     *
     * @param s
     * @param clz
     * @param <T>
     * @param <S>
     * @return
     */
    <T, S> T convert(S s, Class<T> clz);

    /**
     * list深度复制
     *
     * @param s
     * @param clz
     * @param <T>
     * @param <S>
     * @return
     */
    <T, S> List<T> convert(List<S> s, Class<T> clz);

    /**
     * set深度复制
     *
     * @param s
     * @param clz
     * @param <T>
     * @param <S>
     * @return
     */
    <T, S> Set<T> convert(Set<S> s, Class<T> clz);

    /**
     * 数组深度复制
     *
     * @param s
     * @param clz
     * @param <T>
     * @param <S>
     * @return
     */
    <T, S> T[] convert(S[] s, Class<T> clz);


    /**
     * @param source 被拷贝数据源
     * @param target 目标数据
     * @param <T>
     * @param <S>
     * @return
     */
    <T, S> T copy(S source, T target);

}
